OpenFOAM入门指北

您所在的位置:网站首页 cfd support教程 OpenFOAM入门指北

OpenFOAM入门指北

2024-01-13 18:34| 来源: 网络整理| 查看: 265

原创文章,原载于多相流在线公众号

OpenFOAM入门指北

OpenFOAM因其开放性和强大的可扩展性深受CFD研究者的喜爱,但是同样闻名的还有它陡峭的学习曲线,入门较为困难。结合笔者的切身体会,初来乍到至少要面临四重考验:

缺少教程。和其他著名的商业CFD软件(如Ansys FLUENT, STAR-CCM+等)相比,OpenFOAM缺少多样化的用户支持,除了官方仅有的几本简明指南外,可参考的教程仅靠社区活跃者自发提供,这也是许多开源软件的共同特点——从社区中来,到社区中去(Community-based)。这些教程散落在各个角落,等待着有缘人发掘。终端生存。源生OpenFOAM是没有图形界面的,需要有一定的Linux基础才能驾驭,这给初学者带来额外的阻隔感。陌生的操作系统让人捉襟见肘,如坐针毡。幸好使用OpenFOAM所需要的Linux知识其实并不多,以用为学,假以时日便能掌握。CFD理论。“默认”有时与“舒适区”是同义词,而在OpenFOAM中,你却不常能搭“默认”的便车,很多选项都需要手动设置,且十分细化,加上很多时候要实现一处改动就涉及多个文件的修改以匹配(典型的,如边界条件的切换)。动哪些,如何动,考验着用户对流动现象和数值方法的认识。而在对用户体验作了充分优化的商业软件中,鼠标一声令下则相关设置一呼百应,让人想翻车都不太容易,静穆地维护着用户的算例及自尊。相比之下,OpenFOAM用户则不得不把报错当报纸看。不过无需烦扰,舒适区外自有另一重极乐。既然对数值设置一次次的悉心打磨被强行塞进你的工作流,那自然就会慢慢进入你的长期记忆。求助无门。遇到问题,身边有高手自然一问便知,而像笔者这种孤岛+孤狼,遇到问题只能靠互联网,开局一个人,其余全靠搜。前面说到了开源社区,而此间多为高手,不免呈现出一种内行人自说自话的氛围,自洽而自闭,劝退气息浓烈,让小白瑟瑟发抖,接触过各类CFD在线论坛的同学或有感触。很多新手向的问题无人问津,时有因问题不够具体而被针对的情况。然而对于初学者来说,将所面临的问题很好地概括本身就是另一重挑战。幸运的是,问题的解决不总是需要脸皮的参与,很多问题别人早已遇到过,并总结了下来。很多时候,一个链接就能切中肯綮,救人于水火。

伴随着这些困难,初学者一般会有三个问题:

有哪些教程可以帮助我快速上手?我该如何实现我想要的功能?遇到问题我该怎样解决?

本文则围绕这三个问题提供一些建议。

有哪些教程可以帮助我快速上手?

除了各机构提供的OpenFOAM培训项目外,网上有很多免费的教程可以参考,能够满足入门的需求,实为囊中羞涩的学生党们带来了福音。除了官方提供的用户指南,还有以下免费教程可供学习。

1. Tutorial Wiki

该教程维基由ESI-OpenCFD资助,由社区活跃者自发维护。总结有“First Glimpse" 系列 和 “3 Weeks” 系列,带领初学者一步一个脚印地走进OpenFOAM的世界。“First Glimpse" 系列旨在提供OpenFOAM初体验,“3 Weeks”系列则提供了包括OpenFOAM的安装、工作流程介绍、CFD基础理论、网格划分、湍流、多相流、编程等在内的详细讲义。说是三周,其实所需要的时间远不止三周,可以结合自身情况及需要合理安排进度。

2. Youtube Channel by Jozef Nagy

该YouTube频道为Jozef Nagy的视频教程集合,有Linux入门、CFD入门、CFD进阶、前后处理、实用技巧等多个播放列表。良心制作,但是比较考验听力水平。

3. Holzmann CFD by Tobias Holzmann

Tobi的YouTube频道)曾经也有很多优秀的教程,但因为大部分人享受免费的午餐,Tobi得不到足够的支持,所以半年前他下架了所有教程视频,只留下了很多精彩的项目演示。这些视频部分转为付费项目在他的个人网站Holzmann CFD上提供。幸运的是仍有部分教程免费,可点击该网站导航栏“Free Material”获取。

祝愿Tobi能够得到足够的资金支持,早日走出自闭。

4. Tutorials by TU Wien

由维也纳工业大学提供的176页PDF教程,涵盖基本Linux命令、网格划分、湍流、多相流、反应、后处理等,跟着走一遍可以快速熟悉OpenFOAM工作流。

5. WolfDynamics by Joel Guerrero

笔者非常喜欢Joel的讲义,全面而详细,耐读性上佳。自己打印了厚厚一本作为手册查阅。教程集合可以在Tutorial Wiki上的Joel Guerrero专区轻松获取。不过其中漏了几册,包括异常精彩的湍流进阶讲义和多相流进阶讲义,可以在WolfDynamics的教程专区找到。

6. Tutorials by Hrvoje Jasak

由Foam-Extended提供的讲义及视频教程,深入浅出,渗透了很多实用技巧和理念。视频较长,可茶余饭后观看作温习用。

我该如何实现我想要的功能?

完全跟着教程走,最大的不足是过于线性而结构,死磕容易陷入不必要的局部最优。建议在略微熟悉OpenFOAM的操作后就跳出教程,着手实现自己想要的功能,基于搜索进行学习,在大方向上追求自然主义的全局最优。自然主义学习策略的核心是模仿,这就需要相似而透明的案例文件,以供在其基础上进行学习与修改。与此同时,需要对技术细节有足够的知识,才能在模仿的基础上进行有效的变通。基于这两点,推荐以下说明文档及案例来源。

可参考的说明文档包括:

1. Doxygen

由官方提供的Doxygen是比用户指南更为细化的说明书,其中对很多关键字的具体用法有详细的说明。不管你使用的发行版是OpenFOAM-vXXXX还是OpenFOAM-X.X,都推荐查阅前者(即OpenFOAM+)的Doxygen,简单对比你就会发现它有更好的可读性。

2. OpenFOAM Wiki

OpenFOAM Wiki提供了很多按主题分类的案例合集,想要实现某一功能,往往能在这里找到指引。遗憾的是部分页面因为缺少维护而偶有陈旧、欠缺、坏链的现象。

3. Training Manual by CFD Support

CFD Support提供的说明文档也是翔实得让人惊喜,尤其是对一些冷门关键字的使用举例尤其让人兴奋。

4. Docs by SimScale

SimScale是基于OpenFOAM的在线CFD模拟工具,由于是OpenFOAM的商业化应用,所以提供了比源生OpenFOAM更加详细友好的说明文档,绝大部分内容与源生OpenFOAM通用。

5. PENGUINITIS

这是一个神奇的网站,提供了各种开源工具的详细说明,其中有OpenFOAM专区,提供了非常全面的文档。只不过行文为日语,可以用浏览器的自动翻译功能翻译成英文,阅读基本畅通无阻。尝试过翻译成中文,不仅语句不连贯,且关键字都会被一并翻译,阅读体验较差。

6. 东岳流体

李东岳老师提供了很多关于CFD理论和CFD求解器的讲解,深入代码进行剖析,而很多问题在读了代码之后就柳暗花明。

7. SourceFlux

SourceFlux上有很多精彩的博文,尤其涉及一些细节上的技巧。除了免费内容外,还有一本付费书籍《The OpenFOAM Technology Primer》,对OpenFOAM有全面而深入的介绍,很适合入门后阅读,同样推荐给您。

8. Fumiya Nozaki's CFD Blog

Fumiya的个人博客有很多有趣而有价值的博文,其中一些结合代码的解析文章尤其让人受益,对进阶很有帮助。

至于案例则可在以下几处挖掘:

1. $FOAM_TUTORIALS

随OpenFOAM安装自带的教程文件,位于$FOAM_TUTORIALS环境变量,提供了丰富的案例。最炫酷的使用方法莫过于借助Linux的find命令:

find $FOAM_TUTORIALS -name 文件名 | xargs grep -l 关键词

例如,很多教程使用的是一阶迎风,而我想找到使用二阶迎风的算例,则可输入以下命令,在fvSchemes文件中寻找linearUpwind词条:

find $FOAM_TUTORIALS -name fvSchemes | xargs grep -l linearUpwind

输出结果前几行如下:

/opt/openfoam6/tutorials/basic/scalarTransportFoam/pitzDaily/system/fvSchemes /opt/openfoam6/tutorials/combustion/coldEngineFoam/freePiston/system/fvSchemes /opt/openfoam6/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/fvSchemes /opt/openfoam6/tutorials/compressible/rhoPimpleFoam/RAS/aerofoilNACA0012/system/fvSchemes

接下来便可以进入这些文件夹,研读算例文件了。

2. PhD course in CFD with OpenSource Software by Chalmers University of Technology

这个网站可以用宝藏来形容,每讲都针对一个主题有翔实的剖析,专业而前沿。提供演示文稿、书面讲义和算例文件。想要实现某一功能,不妨在此页面搜索关键词,往往能会心一笑。

3. 各类硕博士论文的附录

硕博士论文一般论述详尽,很多在附录中提供了全部的代码,是很值得挖掘的资源。

遇到问题我该怎样解决?——自救指南

计算中遇到的问题有显性的有隐性的。显性的问题一般以报错呈现,可以直接在各大搜索引擎上搜索报错内容,一般能找到满意的解决方案。而隐性的问题则让人头痛不已,比如求解器不报错,而算例就是发散,可能原因则很多,需要有足够的经验才能排查解决。除了到论坛或向身边的大牛发问,你或许还能搭这本书的便车:

“OpenFOAM-A Little User-Manual” by Gerhard Holzinger

这是一本很翔实的用户指南,同时也是一个狗血的问题集锦,作者结合自身多年经验,把遇到过的问题与解决方案都列在了每个专题的最后。如果你正好遇到到了和他一样的问题,那恭喜你,同是天涯沦落人。

幸运的人总是相似的,不幸的人则各有各的不幸,或许在论坛或书中都不会找到和你同样的境遇,但多留心,从别人的错误中学习也是一个低成本进步的办法。

“如果我知道自己会死在哪里,那我就永远也不去!”——查理·芒格

写在最后

笔者在两年前接触OpenFOAM,无人带飞纯自学,幸好有诸多教程的加持,让我近乎免费地在一定程度上掌握了OpenFOAM,当然如影随形的是巨大的时间和精力成本。不过好在如今已经能顺利地用OpenFOAM进行日常的模拟,偶尔修改求解器来实现特定的功能,谈不上水平高下,但基本够用,且用得舒心。

希望今天的内容能对您有所帮助,也愿能稍稍动摇所谓“OpenFOAM没人带就难学会”的隐含假设。感谢您的阅读。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3